package com.qianfeng.zhangwei.volley.utils;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.qianfeng.zhangwei.volley.BaseApp;

import java.util.HashMap;
import java.util.Map;

/**
 * @说 明：
 * @项目名称：Sz1504Adv
 * @包 名： com.qianfeng.zhangwei.volley
 * @类 名： VolleyHelper
 * @创 建人： zhangwei
 * @创建时间：2015-08-03 11:19
 * @版 本：v1.0
 * @修 改人：
 * @修改时间：
 * @修改备注： volley作为app的主框架的话
 */
public class VolleyUtils {
    private static VolleyUtils utils;
    private RequestQueue queue;

    private VolleyUtils() {
        getQueue();
    }

    public synchronized static VolleyUtils getInstance() {
        if (utils == null) {
            utils = new VolleyUtils();
        }
        return utils;
    }


    public RequestQueue getQueue() {
        if (queue == null) {
            queue = Volley.newRequestQueue(BaseApp.getInstance());
        }
        return queue;
    }

    public <T> void addRequest(Request<T> request) {


        getQueue().add(request);
    }

    public void addRequest(int method, String url, final HashMap<String, String> params, Object tag, Response.Listener<String> listener) {
        StringRequest request = new StringRequest(method, url, listener, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {

                return params != null && params.size() > 0 ? params : super.getParams();
            }
        };
        request.setTag(tag);
        getQueue().add(request);
    }


    public void cancellAll(Object tag) {
        getQueue().cancelAll(tag);
    }


}
